Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Be/#307 QueryDSL을 사용한 API에서 createdAt으로 정렬안되는 오류 수정 #308

Merged
merged 5 commits into from
Nov 27, 2023

Conversation

baekhangyeol
Copy link
Collaborator

@baekhangyeol baekhangyeol commented Nov 26, 2023

🛠️ 변경사항

QueryDSL을 사용한 조회 API에서 정렬이 안되는 문제 발견
검색해 본 결과, QueryDSL에서 Pagable을 그대로 쓰고는 정렬 불가능

코드 설명 :

  • Pageable 객체를 받아 Sort에 정의된 순서대로 엔티티의 특정 필드를 정렬하는 OrderSpecifier 객체 목록 생성

  • getSortedColumn 메서드에서 주어진 필드명과 부모 경로를 바탕으로 OrderSpecifier 객체를 생성

  • Pageable과 엔티티 타입을 인자로 받아 해당 엔티티에 대한 createdAt 필드를 기준으로 정렬

  • 각 CustomRepositoryImpl에는 List<OrderSpecifier> ORDERS = QueryDslUtil.getAllOrderSpecifiers(pageable, 엔티티 타입);

  • 위와 같이 리스트를 생성하여 .orderBy(ORDERS.stream().toArray(OrderSpecifier[]::new)) 로 정렬 추가

image
image

☝️ 유의사항

만약 리스트 조회를 해야하는 엔티티가 또 생기면 QueryDslUtil.java에 case 추가하면 됨

👀 참고자료

https://uchupura.tistory.com/7

❗체크리스트

  • 하나의 메소드는 최소의 기능만 하도록 설정했나요?
  • 수정 가능하도록 유연하게 작성했나요?
  • 필요 없는 import문이나 setter 등을 삭제했나요?
  • 기존의 코드에 영향이 없는 것을 확인하였나요?

Copy link

github-actions bot commented Nov 26, 2023

Unit Test Results

84 tests  ±0   84 ✔️ ±0   3s ⏱️ ±0s
16 suites ±0     0 💤 ±0 
16 files   ±0     0 ±0 

Results for commit 633fe63. ± Comparison against base commit 541c6f5.

♻️ This comment has been updated with latest results.

@baekhangyeol baekhangyeol added the 오류 수정 Something isn't working label Nov 26, 2023
Copy link
Collaborator

@youKeon youKeon left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

LGTM!!

@baekhangyeol baekhangyeol merged commit d9bbc1f into feature Nov 27, 2023
3 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
기능구현 오류 수정 Something isn't working
Projects
None yet
Development

Successfully merging this pull request may close these issues.

[fix] QueryDSL을 사용한 API에서 createdAt으로 정렬안되는 오류 수정
2 participants